﻿using System;
using System.Collections.Generic;
using System.Text;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Xpo;
using DevExpress.Persistent.Base;

namespace WinSCM.Module.Model
{
    [NavigationItem("销售管理")]
    public class 销售订单 : OrderObject
    {
        public 销售订单(Session session)
            : base(session)
        {

        }
        protected override SeedType SeedType
        {
            get { return SeedType.销售订单; }
        }
        private 客户 _客户名称;
        [Custom("Caption", "客户名称")]
        public 客户 客户名称
        {
            get { return _客户名称; }
            set
            {
                SetPropertyValue<客户>("客户名称", ref _客户名称, value);

            }
        }
        protected override void OnChanged(string propertyName, object oldValue, object newValue)
        {
            base.OnChanged(propertyName, oldValue, newValue);
            if (propertyName == "客户名称")
            {
                客户 _tmp = (客户)newValue;
                联系人 = _tmp.联系人;
                电话 = _tmp.联系电话;
            }
        }
        private string _联系人;
        [Custom("Caption", "联系人")]
        public string 联系人
        {
            get { return _联系人; }
            set { SetPropertyValue<string>("联系人", ref _联系人, value); }
        }
        private string _电话;
        [Custom("Caption", "电话")]
        public string 电话
        {
            get { return _电话; }
            set { SetPropertyValue<string>("电话", ref _电话, value); }
        }
        private string _传真;
        [Custom("Caption", "传真")]
        public string 传真
        {
            get { return _传真; }
            set { SetPropertyValue<string>("传真", ref _传真, value); }
        }


    }
    public enum 委托代销单据类型
    {
        委托代销 = 0,
        委托退货 = 1
    }
    [NavigationItem("销售管理")]
    public class 委托代销单 : OrderObject
    {
        public 委托代销单(Session session)
            : base(session)
        {

        }
        protected override SeedType SeedType
        {
            get { return SeedType.委托代销单; }
        }
        private 委托代销单据类型 _单据类型;
        [Custom("Caption", "单据类型")]
        public 委托代销单据类型 单据类型
        {
            get { return _单据类型; }
            set { SetPropertyValue<委托代销单据类型>("单据类型", ref _单据类型, value); }
        }
        private DateTime _日期;
        [Custom("Caption", "日期")]
        public DateTime 日期
        {
            get { return _日期; }
            set { SetPropertyValue<DateTime>("日期", ref _日期, value); }
        }
        private 客户 _客户名称;
        [Custom("Caption", "客户名称")]
        public 客户 客户名称
        {
            get { return _客户名称; }
            set { SetPropertyValue<客户>("客户名称", ref _客户名称, value); }
        }
        private string _联系人;
        [Custom("Caption", "联系人")]
        public string 联系人
        {
            get { return _联系人; }
            set { SetPropertyValue<string>("联系人", ref _联系人, value); }
        }
        private string _电话;
        [Custom("Caption", "电话")]
        public string 电话
        {
            get { return _电话; }
            set { SetPropertyValue<string>("电话", ref _电话, value); }
        }
        private string _传真;
        [Custom("Caption", "传真")]
        public string 传真
        {
            get { return _传真; }
            set { SetPropertyValue<string>("传真", ref _传真, value); }
        }
        private 交货方式 _交货方式;
        [Custom("Caption", "交货方式")]
        public 交货方式 交货方式
        {
            get { return _交货方式; }
            set { SetPropertyValue<交货方式>("交货方式", ref _交货方式, value); }
        }
        private 交货地点 _交货地点;
        [Custom("Caption", "交货地点")]
        public 交货地点 交货地点
        {
            get { return _交货地点; }
            set { SetPropertyValue<交货地点>("交货地点", ref _交货地点, value); }
        }
        private 摘要库 _摘要;
        [Custom("Caption", "摘要")]
        public 摘要库 摘要
        {
            get { return _摘要; }
            set { SetPropertyValue<摘要库>("摘要", ref _摘要, value); }
        }
        private 职员 _业务员;
        [Custom("Caption", "业务员")]
        public 职员 业务员
        {
            get { return _业务员; }
            set { SetPropertyValue<职员>("业务员", ref _业务员, value); }
        }
        private 部门 _部门;
        [Custom("Caption", "部门")]
        public 部门 部门
        {
            get { return _部门; }
            set { SetPropertyValue<部门>("部门", ref _部门, value); }
        }
        [Association("委托代销单-明细")]
        public XPCollection<委托代销单明细> 委托代销单明细
        {
            get { return GetCollection<委托代销单明细>("委托代销单明细"); }
        }
    }
    public class 委托代销单明细 : BaseObject
    {
        public 委托代销单明细(Session session)
            : base(session)
        {

        }
        private 委托代销单 _委托代销单号;
        [Custom("Caption", "委托代销单号")]
        [Association("委托代销单-明细")]
        public 委托代销单 委托代销单号
        {
            get { return _委托代销单号; }
            set { SetPropertyValue<委托代销单>("委托代销单号", ref _委托代销单号, value); }
        }
        private 商品 _商品名称;
        [Custom("Caption", "商品名称")]
        public 商品 商品名称
        {
            get { return _商品名称; }
            set { SetPropertyValue<商品>("商品名称", ref _商品名称, value); }
        }
        private 仓库 _仓库名称;
        [Custom("Caption", "仓库名称")]
        public 仓库 仓库名称
        {
            get { return _仓库名称; }
            set { SetPropertyValue<仓库>("仓库名称", ref _仓库名称, value); }
        }
        private string _批号;
        [Custom("Caption", "批号")]
        public string 批号
        {
            get { return _批号; }
            set { SetPropertyValue<string>("批号", ref _批号, value); }
        }
        private decimal _订购数量;
        [Custom("Caption", "订购数量")]
        [Custom("EditMask", "n2")]
        [Custom("DisplayFormat", "{0:n2}")]
        public decimal 订购数量
        {
            get { return _订购数量; }
            set { SetPropertyValue<decimal>("订购数量", ref _订购数量, value); }
        }
    }
    public enum 销售单据类型
    {
        销售发货 = 0,
        销售退货 = 1,
        委托结算 = 2
    }
    [NavigationItem("销售管理")]
    public class 销售单 : OrderObject
    {
        public 销售单(Session session)
            : base(session)
        {

        }
        protected override SeedType SeedType
        {
            get { return SeedType.销售单; }
        }

        private 销售单据类型 _单据类型;
        [Custom("Caption", "单据类型")]
        public 销售单据类型 单据类型
        {
            get { return _单据类型; }
            set { SetPropertyValue<销售单据类型>("单据类型", ref _单据类型, value); }
        }
        private DateTime _日期;
        [Custom("Caption", "日期")]
        public DateTime 日期
        {
            get { return _日期; }
            set { SetPropertyValue<DateTime>("日期", ref _日期, value); }
        }
        private 客户 _客户名称;
        [Custom("Caption", "客户名称")]
        public 客户 客户名称
        {
            get { return _客户名称; }
            set { SetPropertyValue<客户>("客户名称", ref _客户名称, value); }
        }
        private string _联系人;
        [Custom("Caption", "联系人")]
        public string 联系人
        {
            get { return _联系人; }
            set { SetPropertyValue<string>("联系人", ref _联系人, value); }
        }
        private string _电话;
        [Custom("Caption", "电话")]
        public string 电话
        {
            get { return _电话; }
            set { SetPropertyValue<string>("电话", ref _电话, value); }
        }
        private string _传真;
        [Custom("Caption", "传真")]
        public string 传真
        {
            get { return _传真; }
            set { SetPropertyValue<string>("传真", ref _传真, value); }
        }
        private 发票类型 _发票类型;
        [Custom("Caption", "发票类型")]
        public 发票类型 发票类型
        {
            get { return _发票类型; }
            set { SetPropertyValue<发票类型>("发票类型", ref _发票类型, value); }
        }
        private string _发票号码;
        [Custom("Caption", "发票号码")]
        public string 发票号码
        {
            get { return _发票号码; }
            set { SetPropertyValue<string>("发票号码", ref _发票号码, value); }
        }
        private decimal _本次收款;
        [Custom("Caption", "本次收款")]
        public decimal 本次收款
        {
            get { return _本次收款; }
            set { SetPropertyValue<decimal>("本次收款", ref _本次收款, value); }
        }
        private 结算方式 _结算方式;
        [Custom("Caption", "结算方式")]
        public 结算方式 结算方式
        {
            get { return _结算方式; }
            set { SetPropertyValue<结算方式>("结算方式", ref _结算方式, value); }
        }
        private 结算账户 _结算账户;
        [Custom("Caption", "结算账户")]
        public 结算账户 结算账户
        {
            get { return _结算账户; }
            set { SetPropertyValue<结算账户>("结算账户", ref _结算账户, value); }
        }
        private DateTime _收款日期;
        [Custom("Caption", "收款日期")]
        public DateTime 收款日期
        {
            get { return _收款日期; }
            set { SetPropertyValue<DateTime>("收款日期", ref _收款日期, value); }
        }
        private 摘要库 _摘要;
        [Custom("Caption", "摘要")]
        public 摘要库 摘要
        {
            get { return _摘要; }
            set { SetPropertyValue<摘要库>("摘要", ref _摘要, value); }
        }
        private 职员 _业务员;
        [Custom("Caption", "业务员")]
        public 职员 业务员
        {
            get { return _业务员; }
            set { SetPropertyValue<职员>("业务员", ref _业务员, value); }
        }
        private 部门 _部门;
        [Custom("Caption", "部门")]
        public 部门 部门
        {
            get { return _部门; }
            set { SetPropertyValue<部门>("部门", ref _部门, value); }
        }      
    }

    #region 注释
    //[NavigationItem("销售管理")]
    //public class 销售单 : AbsOrder
    //{
    //    public 销售单(Session session)
    //        : base(session)
    //    {

    //    }
    //    protected override SeedType SeedType
    //    {
    //        get { return SeedType.销售单; }
    //    }
    //    //private string _销售单号;
    //    //[Custom("Caption", "销售单号")]
    //    //public string 销售单号
    //    //{
    //    //    get { return _销售单号; }
    //    //    set { SetPropertyValue<string>("销售单号", ref _销售单号, value); }
    //    //}
    //    //private DateTime _制单日期;
    //    //[Custom("Caption", "制单日期")]
    //    //public DateTime 制单日期
    //    //{
    //    //    get { return _制单日期; }
    //    //    set { SetPropertyValue<DateTime>("制单日期", ref _制单日期, value); }
    //    //}
    //    private 仓库 _仓库名称;
    //    [Custom("Caption", "仓库名称")]
    //    public 仓库 仓库名称
    //    {
    //        get { return _仓库名称; }
    //        set { SetPropertyValue<仓库>("仓库名称", ref _仓库名称, value); }
    //    }
    //    //private User _员工;
    //    //[Custom("Caption", "员工")]
    //    //public User 员工
    //    //{
    //    //    get { return _员工; }
    //    //    set { SetPropertyValue<User>("员工", ref _员工, value); }
    //    //}
    //    private decimal _预收款;
    //    [Custom("Caption", "预收款")]
    //    public decimal 预收款
    //    {
    //        get { return _预收款; }
    //        set { SetPropertyValue<decimal>("预收款", ref _预收款, value); }
    //    }
    //    private string _账号;
    //    [Custom("Caption", "账号")]
    //    public string 账号
    //    {
    //        get { return _账号; }
    //        set { SetPropertyValue<string>("账号", ref _账号, value); }
    //    }
    //    private 客户 _客户名称;
    //    [Custom("Caption", "客户名称")]
    //    public 客户 客户名称
    //    {
    //        get { return _客户名称; }
    //        set { SetPropertyValue<客户>("客户名称", ref _客户名称, value); }
    //    }
    //    //private string _备注;
    //    //[Custom("Caption", "备注")]
    //    //public string 备注
    //    //{
    //    //    get { return _备注; }
    //    //    set { SetPropertyValue<string>("备注", ref _备注, value); }
    //    //}

    //    [Association("销售单-销售单明细")]
    //    public XPCollection<销售单明细> 销售单明细
    //    {
    //        get
    //        {
    //            return GetCollection<销售单明细>("销售单明细");
    //        }
    //    }

    //}
    //public class 销售单明细 : BaseObject
    //{
    //    public 销售单明细(Session session)
    //        : base(session)
    //    {

    //    }
    //    private 销售单 _销售单号;
    //    [Custom("Caption", "销售单号")]
    //    [Association("销售单-销售单明细")]
    //    public 销售单 销售单号
    //    {
    //        get { return _销售单号; }
    //        set { SetPropertyValue<销售单>("销售单号", ref _销售单号, value); }
    //    }
    //    private 商品 _商品名称;
    //    [Custom("Caption", "商品名称")]
    //    public 商品 商品名称
    //    {
    //        get { return _商品名称; }
    //        set { SetPropertyValue<商品>("商品名称", ref _商品名称, value); }
    //    }
    //    private decimal _商品数量;
    //    [Custom("Caption", "商品数量")]
    //    public decimal 商品数量
    //    {
    //        get { return _商品数量; }
    //        set { SetPropertyValue<decimal>("商品数量", ref _商品数量, value); }
    //    }
    //    private 单位 _商品单位;
    //    [Custom("Caption", "商品单位")]
    //    public 单位 商品单位
    //    {
    //        get { return _商品单位; }
    //        set { SetPropertyValue<单位>("商品单位", ref _商品单位, value); }
    //    }
    //}
    //[NavigationItem("销售管理")]
    //public class 销售退货单 : AbsOrder
    //{
    //    public 销售退货单(Session session)
    //        : base(session)
    //    {

    //    }
    //    protected override SeedType SeedType
    //    {
    //        get { return SeedType.销售退货单; }
    //    }
    //    //private string _销售退货单号;
    //    //[Custom("Caption", "销售退货单号")]
    //    //public string 销售退货单号
    //    //{
    //    //    get { return _销售退货单号; }
    //    //    set { SetPropertyValue<string>("销售退货单号", ref _销售退货单号, value); }
    //    //}
    //    //private DateTime _制单日期;
    //    //[Custom("Caption", "制单日期")]
    //    //public DateTime 制单日期
    //    //{
    //    //    get { return _制单日期; }
    //    //    set { SetPropertyValue<DateTime>("制单日期", ref _制单日期, value); }
    //    //}
    //    //private User _制单人;
    //    //[Custom("Caption", "制单人")]
    //    //public User 制单人
    //    //{
    //    //    get { return _制单人; }
    //    //    set { SetPropertyValue<User>("制单人", ref _制单人, value); }
    //    //}
    //    //private string _备注;
    //    //[Custom("Caption", "备注")]
    //    //public string 备注
    //    //{
    //    //    get { return _备注; }
    //    //    set { SetPropertyValue<string>("备注", ref _备注, value); }
    //    //}

    //    [Association("销售退货单-销售退货单明细")]
    //    public XPCollection<销售退货单明细> 销售退货单明细
    //    {
    //        get
    //        {
    //            return GetCollection<销售退货单明细>("销售退货单明细");
    //        }
    //    }
    //}
    //public class 销售退货单明细 : BaseObject
    //{
    //    public 销售退货单明细(Session session)
    //        : base(session)
    //    {

    //    }
    //    private 销售退货单 _销售退货单号;
    //    [Custom("Caption", "销售退货单号")]
    //    [Association("销售退货单-销售退货单明细")]
    //    public 销售退货单 销售退货单号
    //    {
    //        get { return _销售退货单号; }
    //        set { SetPropertyValue<销售退货单>("销售退货单号", ref _销售退货单号, value); }
    //    }
    //    private 商品 _商品名称;
    //    [Custom("Caption", "商品名称")]
    //    public 商品 商品名称
    //    {
    //        get { return _商品名称; }
    //        set { SetPropertyValue<商品>("商品名称", ref _商品名称, value); }
    //    }
    //    private decimal _商品数量;
    //    [Custom("Caption", "商品数量")]
    //    public decimal 商品数量
    //    {
    //        get { return _商品数量; }
    //        set { SetPropertyValue<decimal>("商品数量", ref _商品数量, value); }
    //    }
    //    private 单位 _商品单位;
    //    [Custom("Caption", "商品单位")]
    //    public 单位 商品单位
    //    {
    //        get { return _商品单位; }
    //        set { SetPropertyValue<单位>("商品单位", ref _商品单位, value); }
    //    }
    //    private string _备注;
    //    [Custom("Caption", "备注")]
    //    public string 备注
    //    {
    //        get { return _备注; }
    //        set { SetPropertyValue<string>("备注", ref _备注, value); }
    //    }

    //}
    #endregion
}
